<script>
//导入router  路由器
import { useRouter, useRoute } from "vue-router";
import Footer from '@/components/Footer.vue';
import { reactive, toRefs } from "vue";
import axios from "axios";


export default {
  setup() {

    const router = useRouter();
    const route = useRoute();

    const time = new Date();

    const state = reactive({

      hpId: route.query.hpId,
      smId: route.query.smId,

      year: time.getFullYear(),
      month: time.getMonth() + 1,

      calendarArr: [],

      selectDay: "", //用户选择的预约日期
    });

    loadCalendar();

    function loadCalendar() {
      axios
        .post("api/getCalendar", {
          hpId: state.hpId,
          year: state.year,
          month: state.month,
        })
        .then((response) => {
          let Arr=response.data.data
          state.calendarArr = response.data.data;
        
          console.log("arr:",Arr)
        

          //对返回数组进行再加工
          for (let i = 0; i < state.calendarArr.length; i++) {
            //返回数组的前几个元素可能为空
            if (state.calendarArr[i].ymd != null) {
              //1、需要将日期day单独提取出来显示
              state.calendarArr[i].day = parseInt(
                //substring(8)substring(8)方法从日期字符串中提取第9个字符开始的子字符串，即天数部分。
                state.calendarArr[i].ymd.substring(8)  //time ；yyyy-mmmm-dddd   
                
              );

              //2、给每一个日期添加一个是否选中的标识（0：未选中；1：选中）
              if (state.calendarArr[i].ymd == state.selectDay) {
                state.calendarArr[i].selectDay = 1;
              } else {
                state.calendarArr[i].selectDay = 0;
              }
            }
          }
        })
        .catch((error) => {
          console.error(error);
        });
    }

    //上一个月
    function subtractMonth(){
      if(state.month>1){
        state.month--;
      }else{
        state.year--;
        state.month = 12;
      }
      loadCalendar();
    }
    //下一个月
    function addMonth(){
      if(state.month<12){
        state.month++;
      }else{
        state.year++;
        state.month = 1;
      }
      loadCalendar();
    }


    function selectDay(index){
      //验证当前选中日期是否为可预约日期
      if(state.calendarArr[index].remainder==null||state.calendarArr[index].remainder==0){
        return;
      }
      //将所有日期的选中状态清空
      for(let i=0;i<state.calendarArr.length;i++){
        state.calendarArr[i].selectDay = 0;
      }
      state.calendarArr[index].selectDay = 1;
      state.selectDay = state.calendarArr[index].ymd;
    }

    function toConfirmorder(){
      if(state.selectDay==''){
        alert('请选择体检预约日期！');
        return;
      }
      router.push(
        {
          path:'/confirmorder',
          query:{
                  hpId:state.hpId,
                  smId:state.smId,
                  selectDay:state.selectDay,
                  flag:1
                }
        }
      );
    }

    return {
      ...toRefs(state),
      subtractMonth,
      addMonth,
      selectDay,
      toConfirmorder
    };
  },
  components: { Footer },
};
</script>



<template>
    <!-- 总容器 -->
    <div class="wrapper">
        <header>
            <i class="fa fa-angle-left" onclick="history.go(-1)"></i>
            <p>选择体检日期</p>
            <div></div>
        </header>
        <div class="top-ban"></div>

        <section>
            <div class="date-box">
                <i class="fa fa-caret-left" @click="subtractMonth"></i>
                <p>{{ year + "年" + month + "月" }}</p>
                <i class="fa fa-caret-right" @click="addMonth"></i>
            </div>
            <table>
                <tr>
                    <th>日</th>
                    <th>一</th>
                    <th>二</th>
                    <th>三</th>
                    <th>四</th>
                    <th>五</th>
                    <th>六</th>
                </tr>
            </table>
            <ul>
                <li v-for="(calendar, index) in calendarArr" :key="calendar.ymd">
                    <p :class="{
                        fontcolor: calendar.remainder != null && calendar.remainder != 0,
                        pselect: calendar.selectDay == 1,
                    }" @click="selectDay(index)">
                        {{ calendar.day }}
                    </p>
                    <p>
                        {{ calendar.remainder != null && calendar.remainder != 0 ? "余" + calendar.remainder : "" }}
                    </p>
                </li>
            </ul>
        </section>

        <div class="bottom-btn">
            <div></div>
            <div @click="toConfirmorder">下一步</div>
        </div>

        <div class="bottom-ban"></div>
        <Footer></Footer>
    </div>
</template>



<style scoped>
/*********************** 总容器 ***********************/
.wrapper {
    width: 100%;
    height: 100%;
    background-color: #F9F9F9;
}

/*********************** header ***********************/
header {
    width: 100%;
    height: 15.7vw;
    background-color: #FFF;

    position: fixed;
    left: 0;
    top: 0;

    display: flex;
    align-items: center;
    justify-content: space-between;

    box-sizing: border-box;
    padding: 0 3.6vw;
}

header .fa {
    font-size: 8vw;
}

/*********************** footer ***********************/
footer {
    width: 100%;
    height: 14.2vw;
    box-sizing: border-box;
    border-top: solid 1px #E9E9E9;
    background-color: #FFF;

    position: fixed;
    left: 0;
    bottom: 0;
}

footer ul {
    width: 100%;
    height: 14.2vw;
    display: flex;
    align-items: center;
    justify-content: space-around;
}

footer ul li {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;

    font-size: 3vw;
    color: #999;

    user-select: none;
    cursor: pointer;
}

footer ul li .fa {
    font-size: 5vw;
}

/*********************** common样式 ***********************/
.top-ban {
    width: 100%;
    height: 15.7vw;
}

.bottom-ban {
    width: 100%;
    height: 14.2vw;
}

/*********************** section ***********************/
section {
    width: 82vw;
    margin: 0 auto;
    margin-top: 12vw;
}

section .date-box {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 4.5vw;
    font-weight: 600;
}

section .date-box p {
    color: #000;
}

section .date-box i {
    color: #999;
    user-select: none;
    cursor: pointer;
}

section table {
    width: 100%;
    font-size: 3.8vw;
}

section table tr th {
    text-align: center;
    font-weight: 600;
    line-height: 12vw;
}

section ul {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
}

section ul li {
    width: 14.28%;
    height: 12vw;
    font-weight: 600;
    color: #999;
}

section ul li p:first-child {
    width: 6vw;
    height: 6vw;
    margin: 0 auto;
    border-radius: 3vw;

    display: flex;
    justify-content: center;
    align-items: center;

    font-size: 4.2vw;

    user-select: none;
    cursor: pointer;
}

section ul li p:last-child {
    font-size: 3vw;
    font-weight: 300;
    text-align: center;
    user-select: none;
}

.fontcolor {
    color: #333;
}

.pselect {
    background-color: #FB902B;
    color: #FFF;
}

/*********************** bottom-btn ***********************/
.bottom-btn {
    width: 100%;
    height: 12vw;
    background-color: #FFF;

    position: fixed;
    left: 0;
    bottom: 14.2vw;

    display: flex;
}

.bottom-btn div:first-child {
    flex: 2;
}

.bottom-btn div:last-child {
    flex: 1;
    background-color: #117C94;
    text-align: center;
    line-height: 12vw;
    font-size: 5vw;
    color: #FFF;

    user-select: none;
    cursor: pointer;
}
</style>